package com.oj.pro;

import java.util.Scanner;

public class Ver2 {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextInt()){
            m = in.nextInt();
            divN(m,1);
            for (int i = 0; i < res.length; i++) {
                System.out.println(i+">>" + res[i]);
            }
        }
    }

    static int m = 0;
    static int[] res = new int[20];    // 存放解
//    static int times = 0;              // times计算拆分的次数

    /**
     *
     * @param n 要拆分的数
     * @param k 存放解的数组的下标
     */
    public static void divN(int n,int k){
        // 存放拆分后剩余的整数
        int rest = 0;
        // 从1开始尝试拆分
        for (int i = 1; i <= n; i++) {
            // 拆分的解要大于或等于前一个解保证不重复
            if (i >= res[k-1]){
                // 将这次拆分存放在res数组中
                res[k] = i;
                // 剩下的是 n-i
                rest = n - i;
                if (rest == 0){
                    // 如果没有剩下的，说明本次拆分结束

                    // 统计拆分次数
//                    times++;
//                    System.out.println("次数："+times);
                    // 打印结果
                    System.out.printf(m + "=");
                    for (int j = 1; j < k; j++) {
                        System.out.printf(res[j] + "+");
                    }
                    System.out.println(res[k]);
                }else // 若果有剩下的，继续求出res[k + 1]
                    divN(rest,k+1);
            }
        }
    }
}
